Блог пользователя NonGrammer

Автор NonGrammer, 12 лет назад, По-русски

Хей Пишу сверхпростой код:

#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <stdio.h>
#include <math.h>
#include <fstream>
#include <algorithm>
//#include <cstdio>

using namespace std;

int main(){
    int m[100000];
    int n=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>m[i];
    }
    int k;
    cin>>k;
    for(int i=0;i<k;i++){
        int w,h;
        cin>>w>>h;
        int mx=0;
        for(int j=0;j<w;j++){
            if(m[j]>mx){
                mx=m[j];
            }
        }
        std::cout<<mx<<"\n";
        for(int j=0;j<w;j++){
            m[j]=mx+h;
        }
    }
    return 0;
}

И почему-то TL на 13ом претесте

хотя тут только k 10^9 ~~~~~ for(int j=0;j<w;j++){ if(m[j]>mx){ mx=m[j]; } } std::cout<<mx<<"\n"; for(int j=0;j<w;j++){ m[j]=mx+h; } ~~~~~

вестьма небольшие

Почему?

  • Проголосовать: нравится
  • -44
  • Проголосовать: не нравится

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

~~~~~
code
~~~~~

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Квадратное решение — n * n, нужно как минимум n log n.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Можно за O(n)

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится -12 Проголосовать: не нравится

      cout << max(a[1], a[w]) << "\n"; a[1] = max(a[1], a[w]) + h;

      а вот как вы хитро сделали... как же я не додумался.. спасибо

      а минусяры-твари