TABLIC - Tablica
Tác giả: khuc_tuan
Ngôn ngữ: C++
#include <iostream>
#include <iomanip>
#include <fstream>
#include <set>
#include <map>
#include <queue>
#include <deque>
#include <stack>
#include <cmath>
#include <cstring>
#include <string>
#include <sstream>
#include <algorithm>
#include <functional>
#include <ctime>
#include <cstdio>
#include <cstdarg>
using namespace std;
#define Rep(i,n) for(int i=0;i<(n);++i)
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Ford(i,a,b) for(int i=(a);i>=(b);--i)
#define Fit(i,v) for(__typeof(v.begin()) i=v.begin();i!=v.end();++i)
#define Fill(a,b) memset( (a), (b), sizeof(a))
#define pb push_back
#define MP make_pair
#define fi first
#define se second
typedef pair<int,int> PII;
typedef vector<int> VI;
typedef long long LL;
int nextInt() { int x; scanf("%d", &x); return x; }
#define ni nextInt()
int n,k;
vector<PII> step;
void process(PII ins,int &i,int &j){
if(ins.fi>=0){
if(i==ins.fi) j=(j+ins.se)%n;
}
else
if(j==(-ins.fi-1)) i=(i+ins.se)%n;
}
int main() {
n=ni,k=ni;
Rep(tt,k){
int res=0;
int x=ni-1;
int r=ni-1;
int c=ni-1;
int i=x/n;
int j=x%n;
Rep(k,step.size())process(step[k],i,j);
if(j!=c) step.pb(MP(i,(c+n-j)%n)),res+=(c+n-j)%n;
if(i!=r) step.pb(MP(-c-1,(r+n-i)%n)),res+=(r+n-i)%n;
cout<<res<<endl;
}
return 0;
}