Submission #1238587

#TimeUsernameProblemLanguageResultExecution timeMemory
1238587matisitoMosaic (IOI24_mosaic)C++20
8 / 100
77 ms12984 KiB
#include "mosaic.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <math.h>
#include <algorithm>
#include <cstring>
#include <numeric>
#include <vector>
#include <bitset>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <cassert>

using namespace std;
#define dbg(x) cerr<<#x<<": "<<x<<"\n";

/*  
ValeNotta lover
*/

long long suma(long long x, long long y){
  if(x<=1 || y<=1) return 0;
  long long a, b;
  if(y%2==0){
    a=y/2; b=(y/2)-1;
  }else{
    a=b=y/2;
  }
  if(x%2==0) return (a*(x/2))+(b*((x/2)-1));
  else return (a+b)*(x/2);

}

vector<long long> mosaic(vector<int> X, vector<int> Y, vector<int> T, vector<int> B, vector<int> L, vector<int> R) {
  int n=(int)X.size();
  // vector<vector<long long>>dp(n+1, vector<long long>(n+1));
  vector<long long>pref;
  pref.push_back(0);
  for(int j=1 ; j<=n ; j++){
    pref.push_back(pref.back()+X[j-1]);
  }
  n=(int)T.size();
  vector<long long>ans(n);
  for(int i=0 ; i<n ; i++){
    T[i]++; B[i]++; L[i]++; R[i]++;
    ans[i]=suma(B[i], R[i])-suma(B[i], L[i]-1)-suma(T[i]-1, R[i])+suma(T[i]-1, L[i]-1);
  }
  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...