Submission #1249964

#TimeUsernameProblemLanguageResultExecution timeMemory
1249964fadak-14Triple Peaks (IOI25_triples)C++20
Compilation error
0 ms0 KiB
//#include "worldmap.h" #include "triples.h" #include <bits/stdc++.h> #pragma GCC optimize("Ofast") #pragma GCC target("sse2") #define ll long long #define db double #define ld long double #define endl '\n' #define eb emplace_back #define em emplace #define pb push_back #define pf push_front #define pp pop_back #define fr first #define sc second #define sz size #define ir insert #define yes cout << "YES" << endl #define no cout << "NO" << endl #define all(x) x.begin() , x.end() #define alice cout << "Alice" << endl #define bob cout << "Bob" << endl #define fo(x , y) for(ll i = x;i < y;i++) using namespace std; mt19937 rd(time(NULL)); //IOI 2025 problems const ll mxn = 1e5+5; const ll md=998244353; //vector<int> g[mxn]; /* "souvenirs" -> 39 points for now void buy_souvenirs(int N, ll P0) { if(N==2){transaction(P0-1) ;return;} if(N==3){ auto x=transaction(P0-1); if(x.fr.sz()==1){ll vl=P0-1-x.sc; transaction(vl-1);transaction(vl-1);} else{ll vl= (P0-1-x.sc) ; vl+=(2-vl%2)%2;vl/=2; transaction(vl-1);} return; } vector<ll>cn(N,0) , vl(N); vl[0]=P0; for(int i =1;i < N;i++) { auto x =transaction(vl[i-1] - 1) ; for(int y: x.fr) cn[y]++; if(x.fr.sz() ==1) vl[i] = vl[i-1] - 1 -x.sc; else vl[i] = vl[i-1] - 2; } for(int i = 1; i<N;i++) { while(cn[i] <i) { transaction(vl[i]); cn[i]++; } } } */ /* "World Map" -> 72 points for now vector<vector<int>> regulate(vector<vector<int>> board) { int n= board.sz(); int m=board[0].sz() ; int k = max(n,m); vector an=vector(k,vector<int> (k)); for(int i=0;i<n;i++)for(int j = 0;j<m ;j++)an[i][j]=board[i][j]; for(int i=0;i<k;i++){for(int j=0;j<k;j++){ if(!an[i][j]){ if(j>0&&an[i][j-1])an[i][j] =an[i][j-1]; else if(i>0&&an[i-1][j]) an[i][j] =an[i-1][j]; else assert(false); } }} return an; } bool vs[mxn] ; vector<pair<int, bool>> st; void dfs(int v, int pa=-1) { vs[v]=true; for(int u:g[v]) { if(vs[u])continue; st.pb({u,true}); dfs(u,v); st.pb({v,false}); } } vector<vector<int>> create_map(int N, int M , vector<int> A , vector<int> B) { for(int i = 1 ; i <= N ;i++) g[i].clear(); fill(vs,vs + N+1, false) ; for(int i = 0 ;i < M;i++){g[A[i]].pb(B[i]) ;g[B[i]].pb(A[i]);} st=vector<pair<int,bool>>{{1,true}}; dfs(1); vector ans=vector(N*3 +(N-1), vector<int> (N*2)) ; int x= 0; for(auto [v,fi]:st) { if(fi) { for(int j=0;j<3;j++){for(int k = 0; k < N*2;k++)ans[x+j][k]=v;} for(int j =0;j <g[v].sz() ;j++)ans[x+1][j*2] = g[v][j]; x+=3; } else{ for(int k =0;k<N*2;k++)ans[x][k]=v; x++; } } return regulate(ans) ; } */ //"Triple Peaks" , goal -> 50 vector<int> construct_range(int M , int K) { vector<int> rs(M , 0) ; for(int i =0;i<M ;i++) {rs[i] = 1 ; if(i%3 ==2) rs[i] = 2;} return rs; } ll count_triplesnd(vector<int> H) { int N = H.sz() ; ll ile =0; for(int i = N-1;i>=0;i--){ int k = i - H[i]; if(k<0)continue; int j= k+H[k]; if(j<0 ||j>= N); else if(H[k] + H[j]==H[i] && (i-j)==H[j]&& k<j && j <i)ile++; j = i - H[k]; if(k+H[k] ==j)continue; if(j<0||j>=N); else if(H[k] + H[j]==H[i] && (j-k)==H[j]&& k<j && j <i)ile++; } return ile; } ll count_triples(vector<int> H) { int n=H.sz() , b=0; bool cz = true; for(int i =0 ; i <N;i++) b = max(b,H[i]); for(int i = 1 ; i <N;i++) if(H[i-1] >H[i]) cz =false; if(cz) return count_triplesnd(H); ll ile=0; for(int i =0 ;i < N;i++){ for(int j = i + 1 ; j < min(N, i+b+1); j++){ int d = j - i; if(H[i] == d ||H[j] ==d){ int r =0; if(H[i] == d) r = H[j]; else r = H[i]; int k =j+r; if(k>=0 && k < N && k > j && H[k] == r + d)ile++; k = i +r ; if(k >= 0 && k < N && k > j && r == H[k] + d)ile++; } else{ int k = j +min(H[i] ,H[j]); if(k>=0 && k<N&&H[k] ==d&&min(H[i], H[j])+d==max(H[i],H[j]))ile++; } } } return ile; }

Compilation message (stderr)

triples.cpp: In function 'long long int count_triples(std::vector<int>)':
triples.cpp:130:23: error: 'N' was not declared in this scope
  130 |     for(int i =0 ; i <N;i++) b = max(b,H[i]);
      |                       ^
triples.cpp:131:24: error: 'N' was not declared in this scope
  131 |     for(int i = 1 ; i <N;i++) if(H[i-1] >H[i]) cz =false;
      |                        ^
triples.cpp:134:23: error: 'N' was not declared in this scope
  134 |     for(int i =0 ;i < N;i++){
      |                       ^