Pagini recente » Monitorul de evaluare | Cod sursa (job #1712286) | Cod sursa (job #1344172) | Cod sursa (job #2004039) | Cod sursa (job #3321600)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cutii.in"); // strudel
ofstream fout("cutii.out"); //cutii
long long n,i,j,q,t,x,y,z,sum1;
int a[3600][3600];
struct aaa{
int x,y,z;
};
aaa v[3600];
auto cmp = [](const aaa& a, const aaa& b){
return a.x<b.x;
};
void update(int x, int y, int v){
for(int i=x;i<=n;i+=i&-i)
for(int j=y;j<=n;j+=j&-j)
a[i][j]+=v;
}
int sum(int x, int y){
int sum=0;
for(int i=x;i>0;i-=i&-i)
for(int j=y;j>0;j-=j&-j)
sum+=a[i][j];
return sum;
}
int main()
{
fin>>n>>t;
for(q=1;q<=t;q++){
for(i=1;i<=n;i++) fin>>x>>y>>z,v[i]={(int)x,(int)y,(int)z};
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;){
vector<aaa> s;
s.push_back(v[i++]);
while(v[i].x==v[i-1].x) s.push_back(v[i]),i++;
for(auto it:s){
sum1+=sum(it.y-1, it.z-1);
}
for(auto it:s){
update(it.y, it.z, 1);
}
}
fout<<sum1<<'\n';
for(i=1;i<=n;i++) for(j=1;j<=n;j++) a[i][j]=0;
sum1=0;
}
return 0;
}